﻿using System;
using System.Collections.Generic;
using System.Text;
using PublicTransport.DAL;
using PublicTransport.Services.BO;
using PublicTransport.Services.Enums;

namespace PublicTransport.Services
{
    /// <summary>
    /// Interface popisujúci hlavnú funkcionalitu potrebnú k vyhľadaniu spoja.
    /// </summary>
    interface IPathSearchService
    {
        /// <summary>
        /// Kľúčová metóda, ktorá navráti všetky možnosti presunu z jednej zastávka na druhú.
        /// </summary>
        /// <param name="startId">Štartovná zastávka</param>
        /// <param name="endId">Cieľová zastávka</param>
        /// <param name="time">Čas v ktorom hľadáme spoj</param>
        /// <param name="daytype">Typ ďna</param>
        /// <returns></returns>
        List<List<PublicTransport.Services.Step2.Transit>> FindPath(int startId, int endId, int time, DayTypeEnum daytype);
        
        /// <summary>
        /// Zavolá predpripravenie dát, po ukončení prípravy zavolá event DataLoaded
        /// </summary>
        void AsyncLoad();
        
        /// <summary>
        /// Event vyvolaný po ukončení predprípravy dát po zavolaní AsyncLoad.
        /// </summary>
        event EventHandler DataLoaded;
    }
}
